import { RoleEntity } from './role.entity'
import { CommonEntity } from '../common.entity'
import { GenderEnum } from '@/common/enums/gender.enum'
import { Column, Entity, JoinTable, ManyToMany } from 'typeorm'

@Entity('sys_user')
export class UserEntity extends CommonEntity {
  /** 登录用户名 */
  @Column({ default: null, unique: true })
  username: string

  /** 登录密码（加密存储） */
  @Column({ default: null })
  password: string

  /** 用户真实姓名 */
  @Column({ default: null })
  realname: string

  /** 用户昵称（唯一） */
  @Column({ default: null, unique: true })
  nickname: string

  /** 手机号码（唯一） */
  @Column({ default: null, unique: true })
  phone: string

  /** 头像图片 URL */
  @Column({ default: null })
  avatar: string

  /** QQ号码（唯一） */
  @Column({ default: null, unique: true })
  qq: string

  /** 用户年龄 */
  @Column({ comment: '年龄', default: null })
  age: number

  /** 性别（默认未知，关联 GenderEnum） */
  @Column({ comment: '性别', default: GenderEnum.UNKNOWN })
  gender: number

  /** 数据状态（1正常，0停用） */
  @Column({ type: 'tinyint', comment: '数据状态', default: 1 })
  status: number

  @ManyToMany(() => RoleEntity, (role) => role.users)
  @JoinTable({ name: 'sys_user_role_relation', joinColumns: [{ name: 'userId' }], inverseJoinColumns: [{ name: 'roleId' }] })
  roles: RoleEntity[]
}
